package com.controller;


import com.constant.AppConstant;
import com.dto.JsonResult;
import com.exception.ParamException;
import com.service.FileService;
import com.vo.FileVo;
import io.swagger.annotations.Api;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;


@Api(value = "文件上传，下载相关功能")
@RestController
@Log4j2
public class FileController {

    @Autowired
    private FileService fileService;

    @PostMapping("/api/localStorage")
    public JsonResult fileUploads(@RequestParam("file") MultipartFile file) {
        log.info("开始调用");
//        // 获取上传的文件名称
//        System.out.println("开始" + System.currentTimeMillis());
//        String fileName = file.getOriginalFilename();
//        File folder = new File(AppConstant.DEFAULT_SAVE_PATH);
//        if (!folder.exists() && !folder.isDirectory()) {
//            folder.mkdirs();
//            log.info("创建文件夹");
//        } else {
//            log.info("文件夹已存在");
//            File dest = new File(AppConstant.DEFAULT_SAVE_PATH + File.separator + fileName);
//            if (dest.exists()) {
//                dest.delete();
//            }
//            try {
//                // 上传的文件被保存了
//                file.transferTo(dest);
//                // 打印日志
//                log.info("上传成功，当前上传的文件保存在 {}", AppConstant.DEFAULT_SAVE_PATH + File.separator + fileName);
//                System.out.println("结束" + System.currentTimeMillis());
//                // 自定义返回的统一的 JSON 格式的数据，可以直接返回这个字符串也是可以的。
//                return JsonResult.buildSuccess(200, "上传成功");
//            } catch (IOException e) {
//                log.error(e.toString());
//                return JsonResult.buildFailure(500, "上传失败");
//            }
//        }
        // 待完成 —— 文件类型校验工作
        return JsonResult.buildSuccess(200, fileService.create(file));
    }

    @PostMapping("/api/uploadApp")
    public JsonResult appUpdateInfo(@RequestBody FileVo fileVo) {
        System.out.println(fileVo);
        if (fileVo.getVersionId() == null) {
            throw new ParamException("请对项目做出选择");
        } else {
            if (fileService.updateFile(fileVo) > 0) {
                return JsonResult.buildSuccess(200, "任务已更新!");
            } else {
                throw new ParamException("服务端异常！请稍后重试！");
            }
        }
    }


}
